Subscriber television systems transmit to system subscribers a plurality of signals, including television programming and other services. Subscriber television systems typically include a headend for organizing and processing the signals and then transmitting the signals via a communication medium to subscriber equipment that tunes to television channels for displaying television programming to the subscriber. The signals to the subscriber can be transmitted, for instance, over coaxial cables, fiber optic cables, a hybrid fiber-coax, or a satellite. Signals to a subscriber can be provided directly to a cable-ready television, a cable-ready videocassette recorder (VCR), or a set top terminal connected to a television or other display device, such as a computer.
Many subscriber television systems provide television program information describing the programs and times the programs will be shown. The program information is organized into individual program records, one for each program, and these records are maintained in a program information database. The database is typically stored in the subscriber equipment to allow the subscriber to quickly and easily access the program information. There is an individual record for every program to be shown on every channel during a specific time period for which the information is provided. The time period is based on the memory available to store the database and may include days or months of program information. The program records describe a multitude of attributes for each and every program. The attributes for each individual program can include the program name, a description of the program, content rating (G, PG, R, etc.), viewing times, and one or more related content categories for the program (e.g., Sports, Movies, Family, etc.).
This program information is typically organized for presentation purposes into a program guide format that presents the program information for the programs by the time when, and channel on which, they will be displayed. This allows the subscriber to scan the available programs and decide which of the available programs to watch. For example, a program guide can be scrolled through in numerical order by television channel, presenting the program information for the programs available on each channel. Another method of viewing the program information is with the use of a browser. A browser displays program information in a portion of the display screen, while continuing to display video in the remainder of the display screen. With a browser a subscriber can linearly scan program information by time and channel while continuing to view the video of the program on the currently tuned channel.
In systems that offer a relatively small number of television channels, the subscriber can easily scan the available programs one-by-one in order of channel number. However, many systems can provide hundreds or even thousands of channels. In such systems, scanning program information by channel number one-by-one can require hundreds or thousands of keystrokes and can consume a tremendous amount of time. Furthermore, locating a particular channel can be quite difficult if the subscriber does not already know the channel number of the channel for which he or she is searching.
Current methods of organizing the program information include providing, or allowing the subscriber to select, sub-sets of the program information to be displayed and viewed. Channels can be assigned to a “Favorite” category and then only program information for the selected channels will be displayed. Subscribers can select to only view program information for programs with a particular attribute. To provide a user with a listing of all of the individual programs on a selected channel or with a certain attribute requires searching all of the individual records in the database to find the program records that contain the desired attribute. For example, to provide a subscriber with a listing of every program with a “G” rating would require searching every program record in the database for the “G” ratings attribute. Searching an entire program information database requires the settop terminal's microprocessor to execute a lot of processor cycles. This can produce a noticeable latency or slowed response to the subscriber because of the number of processor cycles required to completely search the entire program information database, organize the results, and then display the results. In systems with browsers, this can have even more of an impact as the same processor may be processing the video and searching the program information database simultaneously. Searching a database of program records is further complicated by the fact that a program record can include a variable number of fields with variable sizes. Searching through variable sized records requires more processor cycles than searching fixed size records.
Systems have been developed with a multiple modes or machine states to help control the processing cycle requirements on the processor. A machine state describes the current operating state of a component that is capable of functioning in multiple states to perform different tasks. For example, a menu mode is a separate machine state from a view video mode. This allows the processor to use the processor cycles required for searching the program information database without being required to simultaneously process video. The search results can be stored. After switching modes, the search results can be retrieved in the view video mode to support browsing program information while viewing video without requiring a simultaneous search of the program information database. The menu mode still requires searching the entire program information database and the subscriber must switch between modes to select and update the sub-set of program information that they desire to view.
What is needed is an improved way to organize and search program information in a subscriber television system.